package com.pattern.observer;

import com.pattern.observer.service.impl.Student;
import com.pattern.observer.service.impl.Teacher;

import java.util.Vector;

/**
 * 适用场景：
 *  观察者模式，用于存在一对多依赖关系的对象间，当被依赖者变化时，通知依赖者全部进行更新。
 *  因此，被依赖者，应该有添加/删除依赖者的方法，且可以将添加的依赖者放到一个容器中；
 *  且有一个方法去通知依赖者进行更新。
 */
public class Client {
    public static void main(String[] args){
        Vector students = new Vector();
        Teacher t = new Teacher();
        for(int i= 0 ;i<10;i++){
            Student st = new Student("lili"+i,t);
            students.add(st);
            t.attach(st);
        }
        t.setPhone("88803807");
        for(int i=0;i<10;i++) {
            ((Student) students.get(i)).show();
        }
        t.setPhone("88808880");
        for(int i=0;i<10;i++) {
            ((Student) students.get(i)).show();
        }
    }
}
